package com.tarena.lbs.attach.config;

import org.apache.dubbo.config.ApplicationConfig;
import org.apache.dubbo.config.ProtocolConfig;
import org.apache.dubbo.config.RegistryConfig;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * Dubbo配置类
 * 用于配置Dubbo服务的基本信息
 */
@Configuration
public class DubboConfig {

    /**
     * 配置Dubbo应用信息
     * @return 应用配置对象
     */
    @Bean
    public ApplicationConfig applicationConfig() {
        ApplicationConfig applicationConfig = new ApplicationConfig();
        // 设置应用名称，与application.yml中的spring.application.name一致
        applicationConfig.setName("lbs-attach");
        // 设置应用的负责人（可选）
        applicationConfig.setOwner("lbs-team");
        return applicationConfig;
    }

    /**
     * 配置Dubbo注册中心
     * @return 注册中心配置对象
     */
    @Bean
    public RegistryConfig registryConfig() {
        RegistryConfig registryConfig = new RegistryConfig();
        // 使用Nacos作为注册中心
        registryConfig.setAddress("nacos://localhost:8848");
        // 设置注册中心协议为nacos
        registryConfig.setProtocol("nacos");
        return registryConfig;
    }

    /**
     * 配置Dubbo协议
     * @return 协议配置对象
     */
    @Bean
    public ProtocolConfig protocolConfig() {
        ProtocolConfig protocolConfig = new ProtocolConfig();
        // 使用dubbo协议
        protocolConfig.setName("dubbo");
        // 设置dubbo协议端口（与服务提供者端口一致）
        protocolConfig.setPort(20880);
        return protocolConfig;
    }
}